﻿package 
{
	import fl.controls.Button;
	import fl.controls.TextInput;
	import flash.display.Sprite;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import flash.events.NetStatusEvent;
	import flash.events.MouseEvent;
	import flash.events.Event;
	//import flash.net.ObjectEncoding;
	import flash.media.Camera;
	import flash.media.Microphone;
	import flash.media.Video;
	public class MinRecord extends Sprite
	{
		private var nc:NetConnection;
		private var ns:NetStream;
		private var rtmpNow:String;
		private var msg:Boolean;
		private var cam:Camera;
		private var mic:Microphone;
		private var vid1:Video;
		private var recordBtn:Button;
		private var stopBtn:Button;
		private var textInput:TextInput;
		//Constructor
		public function MinRecord()
		{
			//NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
			nc=new NetConnection();
			nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);
			nc.client = this;
			rtmpNow = "rtmp://192.168.1.209/livepkgrTest";
			//rtmpNow="rtmp:/vid2″;
			nc.connect(rtmpNow);
			addMedia();
			addUI();
			recordBtn.addEventListener(MouseEvent.CLICK,startRecord);
			stopBtn.addEventListener(MouseEvent.CLICK,stopRecord);
		}
		private function addMedia():void
		{
			cam = Camera.getCamera();
			cam.setMode(240,180,24);
			cam.setQuality(0,90);
			mic = Microphone.getMicrophone();
			vid1 = new Video(cam.width,cam.height);
			vid1.attachCamera(cam);
			addChild(vid1);
			vid1.x = 100;
			vid1.y = 50;
		}
		private function addUI():void
		{
			recordBtn=new Button();
			recordBtn.label = "Record";
			recordBtn.x = 100;
			recordBtn.y=50+(cam.height) +5;
			recordBtn.width = 70;
			addChild(recordBtn);
			stopBtn=new Button();
			stopBtn.label = "Stop Record";
			stopBtn.x = recordBtn.x + 85;
			stopBtn.y = recordBtn.y;
			stopBtn.width = 75;
			addChild(stopBtn);
			textInput=new TextInput();
			textInput.x = recordBtn.x;
			textInput.y = recordBtn.y + 30;
			addChild(textInput);
		}
		private function checkConnect(e:NetStatusEvent):void
		{
			msg=(e.info.code=="NetConnection.Connect.Success");
			trace(e.info.code);
			if (msg)
			{
				ns = new NetStream(nc);
			}
		}
		private function startRecord(e:Event):void
		{
			if (ns)
			{
				recordBtn.label = "Recording";
				ns.attachAudio(mic);
				ns.attachCamera(cam);
				ns.publish(textInput.text,"record");
			}
		}
		private function stopRecord(e:Event):void
		{
			recordBtn.label = "Record";
			ns.close();
		}
		
		public function onBWDone():void
		{
			
		}
	}
}